package com.mis.horario;

import java.util.ArrayList;
import java.util.List;

import com.mis.database.DBAdapter;
import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.Spinner;
import android.widget.Toast;



public class ProyectoHorarioActivity extends Activity {
    /** Called when the activity is first created. */
	 private DBAdapter dbHelper;
	 private List<Materia> materias = new ArrayList<Materia>();
	 private ListView ListMaterias;
	 private AdapterMateria adapter;
	 
	 private AlertDialog alertdialog_acerca;
	 private AlertDialog alertdialog_cuenta;
	 private View view_cuenta;
	 private Estudiante estudiante = null;
	 
	
	public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        /*
         *  En el layout MAIN se define el layout que contiene el LISTVIEW
         *  Recordar que el LISTVIEW tiene un LAYOUT definido por cada ITEM, este Layout es "materia.xml"
         *  
         */
        
        setContentView(R.layout.main);
        ListMaterias = (ListView) findViewById(R.id.listView_materias);
        
        
        
        /*
         * Se cree un Objeto del tipo DBAdapter, el cual tiene los métodos necesarios de nuestra lógica de negocios
         */
        dbHelper = new DBAdapter(this);
        materias.clear();
        materias = dbHelper.selectMaterias();
        
        /*
         * Obtenemos la información del estudiante
         */
        estudiante = dbHelper.selectEstudiante();

        // Creamos el Adaptador de nuestro LISTVIEW
        adapter = new AdapterMateria(this, materias);
        ListMaterias.setAdapter(adapter);        
        ListMaterias.setOnItemClickListener(new OnItemClickListener() {  
       
			public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, 	long arg3) {
				Toast.makeText(getApplicationContext(), "ITEM SELECCIONADO " + arg2 , Toast.LENGTH_SHORT).show();
				
			}       
       });
        
       
        // Creamos un AlertDialog para  el diálogo "Acerca"
        LayoutInflater inflater = LayoutInflater.from(this);
        View view_acerca = inflater.inflate(R.layout.acerca, null);
 		AlertDialog.Builder alt_acerca = new AlertDialog.Builder(this);
 		alt_acerca.setView(view_acerca);
 		alt_acerca.setCancelable(true);
 		alt_acerca.setTitle(R.string.text_acerca);
 		alt_acerca.setIcon(R.drawable.ic_acerca_dark);
 		alt_acerca.setPositiveButton(getResources().getText(R.string.btn_aceptar),null);
 		alertdialog_acerca = alt_acerca.create();
 		
 		
 		// Creamos un AlertDialog para  el diálogo "Mi cuenta"
        view_cuenta = inflater.inflate(R.layout.cuenta, null);
 		AlertDialog.Builder alt_cuenta = new AlertDialog.Builder(this);
 		alt_cuenta.setView(view_cuenta);
 		alt_cuenta.setCancelable(true);
 		alt_cuenta.setTitle(R.string.text_cuenta);
 		alt_cuenta.setIcon(R.drawable.ic_cuenta_dark); 		
 		alertdialog_cuenta = alt_cuenta.create();
 		
 		Spinner spinner = (Spinner) view_cuenta.findViewById(R.id.spinner_regiones);
 	    ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource( this, R.array.regiones, android.R.layout.simple_spinner_item);
 	    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
 	    spinner.setAdapter(adapter);
        
	
	}
	
	/**
	 * Función para Guardar los datos del usuario
	 * @param v
	 */
	public void btn_aceptar(View v){
		if(((EditText) view_cuenta.findViewById(R.id.editText_nombre)).length()==0) ((EditText) view_cuenta.findViewById(R.id.editText_nombre)).setError("Requerido");
		if(((EditText) view_cuenta.findViewById(R.id.editText_matricula)).length()==0) ((EditText) view_cuenta.findViewById(R.id.editText_matricula)).setError("Requerido");
		if(((EditText) view_cuenta.findViewById(R.id.editText_correo)).length()==0) ((EditText) view_cuenta.findViewById(R.id.editText_correo)).setError("Requerido");
		
		if(((EditText) view_cuenta.findViewById(R.id.editText_nombre)).length()>0
		 && ((EditText) view_cuenta.findViewById(R.id.editText_matricula)).length()>0
		 && ((EditText) view_cuenta.findViewById(R.id.editText_correo)).length()>0
		){
			
			dbHelper.updateEstudiante(((EditText) view_cuenta.findViewById(R.id.editText_nombre)).getText().toString().toUpperCase(), 
					((EditText) view_cuenta.findViewById(R.id.editText_correo)).getText().toString().toUpperCase(),
					((EditText) view_cuenta.findViewById(R.id.editText_matricula)).getText().toString().toUpperCase(),
					((Spinner) view_cuenta.findViewById(R.id.spinner_regiones)).getSelectedItem().toString()
					);	
			estudiante = dbHelper.selectEstudiante();		
			alertdialog_cuenta.dismiss();
		}
	}	
	
	/**
	 * Función para Cancelar el Diálogo los datos del usuario
	 * @param v
	 */
	public void btn_cancelar(View v){
		alertdialog_cuenta.dismiss();
	}
	
	
	/*
	 * Refrescamos los datos desde el WebService
	 */
	
	public void btn_refresh(View v) {
		if(estudiante.getMatricula().length()==0) {
			alertdialog_cuenta.show();
		}
		else {
			Toast.makeText(this, "RUTINA PARA REFRESCAR LISTADO", Toast.LENGTH_SHORT).show();
		}
	}
	
	
	/*
	 * Creamos el menú para android (Mi cuenta, Acerca de)
	 * (non-Javadoc)
	 * @see android.app.Activity#onCreateOptionsMenu(android.view.Menu)
	 */
	
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
	    MenuInflater inflater = getMenuInflater();
	    inflater.inflate(R.menu.menu, menu);
	    return true;
	}
	
	
	/*
	 * Cuando selecccionamos algún elemento de mi ListView de Materias
	 * (non-Javadoc)
	 * @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)
	 */
	
	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
	    switch (item.getItemId()) {
	        case R.id.menu_cuenta:     
	        	
	        	estudiante = dbHelper.selectEstudiante();
	        	
	        	if (estudiante == null) {	        	
	        	
		        	((Spinner) view_cuenta.findViewById(R.id.spinner_regiones)).setSelection(0);
		        	((EditText) view_cuenta.findViewById(R.id.editText_nombre)).setText("");
		        	((EditText) view_cuenta.findViewById(R.id.editText_matricula)).setText("");
		        	((EditText) view_cuenta.findViewById(R.id.editText_correo)).setText("");	        	
		        	
	        	}
	        	else {
	        		
	        		Spinner spinner = ((Spinner) view_cuenta.findViewById(R.id.spinner_regiones));

	        		@SuppressWarnings("unchecked")
	        		ArrayAdapter<String> myAdap =  (ArrayAdapter<String>) spinner.getAdapter(); 
	        		int spinnerPosition = myAdap.getPosition(estudiante.getRegion());
	        		
	        		
	        		((Spinner) view_cuenta.findViewById(R.id.spinner_regiones)).setSelection(spinnerPosition);
	        		((EditText) view_cuenta.findViewById(R.id.editText_nombre)).setText(estudiante.getNombre());
		        	((EditText) view_cuenta.findViewById(R.id.editText_matricula)).setText(estudiante.getMatricula());
		        	((EditText) view_cuenta.findViewById(R.id.editText_correo)).setText(estudiante.getEmail());	        		
	        	}
	        	
	        	((EditText) view_cuenta.findViewById(R.id.editText_nombre)).setError(null);
	        	((EditText) view_cuenta.findViewById(R.id.editText_matricula)).setError(null);
	        	((EditText) view_cuenta.findViewById(R.id.editText_correo)).setError(null);
	        	
	        	alertdialog_cuenta.show();
                break;
	        case R.id.menu_acerca:     
	        	alertdialog_acerca.show();
                break;	   
	    }
	    return true;
	}
	
	
   

}